package com.fau.ss.service;

import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.ss.entity.MedicalAdmin;
import com.fau.ss.entity.MedicalGroup;
import com.fau.ss.entity.MedicalMedicineSort;
import com.fau.ss.entity.MedicalPlatform;
import com.fau.ss.entity.MedicalSsPurchase;
import com.fau.ss.util.Page;

/**
 * @desc 购买力统计接口
 * @author kangyj
 * @datetime 2014年11月10日,下午3:05:54
 */
public interface IPurchasingPowerStaService {
	
	/**
	 * @desc 分页查询购买力基本统计数据
	 * @param purchase 购买力实体类
	 * @param admin 当前用户
	 * @param map 分页参数
	 * @return Page
	 * @author kangyj
	 * @datetime 2014年11月10日,下午3:08:43
	 */
	public Page findPurPowerBasicByPage(MedicalSsPurchase purchase, MedicalAdmin admin, Map<String, Object> map);
	
	/**
	 * @desc 分页查询购买力以药品类别统计
	 * @param purchase
	 * @param admin
	 * @param map
	 * @return Page
	 * @author kangyj
	 * @datetime 2014年11月11日,下午3:24:47
	 */
	public Page findPurPowerMedicineByPage(MedicalSsPurchase purchase, MedicalAdmin admin, Map<String, Object> map);
	
	/**
	 * @desc 查询药品类别集合
	 * @param admin 当前用户
	 * @return List<MedicalMedicineSort>
	 * @author kangyj
	 * @datetime 2014年11月11日,下午4:43:34
	 */
	public List<MedicalMedicineSort> findMedicineSortList(MedicalAdmin admin);
	
	/**
	 * @desc 以年龄段进行统计
	 * @param admin 当前用户
	 * @return List<String>
	 * @author kangyj
	 * @datetime 2014年11月11日,下午6:04:29
	 */
	public List<String> StatisticsByAgeRange(MedicalAdmin admin, MedicalSsPurchase purchase);
	
	/**
	 * @desc 以年份统计
	 * @param admin 当前用户
	 * @return List<String>
	 * @author kangyj
	 * @datetime 2014年11月12日,下午10:03:46
	 */
	public List<String> StatisticsByYear(MedicalAdmin admin, MedicalSsPurchase purchase);
	
	/**
	 * @desc 以月份统计
	 * @param admin
	 * @param purchase
	 * @return List<String>
	 * @author kangyj
	 * @datetime 2014年11月17日,上午11:23:31
	 */
	public List<String> StatisticsByMonth(MedicalAdmin admin, MedicalSsPurchase purchase);
	
	/**
	 * @desc 以会员等级统计
	 * @param admin 当前用户
	 * @param purchase 
	 * @return Map<String, Object>
	 * @author kangyj
	 * @datetime 2014年11月17日,下午5:09:46
	 */
	public Map<String, Object> StatisticsByLevel(MedicalAdmin admin, MedicalSsPurchase purchase);
	
	/**
	 * @desc 以宣传地区统计
	 * @param admin
	 * @param purchase
	 * @return Map<String, Object>
	 * @author kangyj
	 * @datetime 2014年11月19日,上午1:47:54
	 */
	public Map<String, Object> StatisticsByCity(MedicalAdmin admin, MedicalSsPurchase purchase);
	
	/**
	 * @desc 查询公司下所有的中心
	 * @param admin
	 * @return List<MedicalPlatform>
	 * @author kangyj
	 * @datetime 2014年11月19日,上午2:10:40
	 */
	public List<MedicalPlatform> findCenterList(MedicalAdmin admin);
	
	/**
	 * @desc 查询中心下的组
	 * @param cId
	 * @return List<MedicalGroup>
	 * @author kangyj
	 * @datetime 2014年11月19日,上午2:11:32
	 */
	public List<MedicalGroup> findGroupListByCid(String cId);
	
	/**
	 * @desc 查询组下的话务员
	 * @param gId
	 * @return List<MedicalAdmin>
	 * @author kangyj
	 * @datetime 2014年11月19日,上午2:12:27
	 */
	public List<MedicalAdmin> findUserListByGid(String gId);
	
	/**
	 * @desc 分配客户
	 * @param phoneNum 客户号码
	 * @param usersId 用户id
	 * @author kangyj
	 * @datetime 2014年11月20日,上午10:14:09
	 */
	public void allocate(String phoneNum, String usersId);
	
	/**
	 * @desc 购买力基本统计导出
	 * @return Workbook
	 * @throws Exception 
	 * @author liy
	 * @datetime 2014年12月30日,下午9:08:04
	 */
	public Workbook exportBasicAll(MedicalSsPurchase purchase) throws Exception;
	
	/**
	 * @desc 购买力药品类别统计导出
	 * @return Workbook
	 * @throws Exception 
	 * @author liy
	 * @datetime 2014年12月30日,下午9:56:03
	 */
	public Workbook medicineSortExportBasicAll(MedicalSsPurchase purchase) throws Exception;
	
	/**
	 * @desc 消费习惯基本统计导出
	 * @return Workbook
	 * @throws Exception 
	 * @author liy
	 * @datetime 2014年12月30日,下午11:02:21
	 */
	public Workbook buyFrequencyExportBasicAll(MedicalSsPurchase purchase) throws Exception;
	
	/**
	 * @desc 消费习惯药品类别统计导出
	 * @return Workbook
	 * @throws Exception 
	 * @author liy
	 * @datetime 2014年12月30日,下午11:34:27
	 */
	public Workbook buyFrequencyMsExportBasicAll(MedicalSsPurchase purchase) throws Exception;
	
	
}
